import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

# 读取包含 KMeans 标签和输入变量的文件
df_with_labels = pd.read_csv("new_file_with_kmeans_labels.csv")

# 获取输入变量列
input_variables = ['Q2', 'Q3', 'Q4', 'Q5', 'Q6', 'Q10', 'Q11', 'Q12', 'Q13', 'Q14']
variable_names = {
    'Q2': '性别',
    'Q3': '年龄',
    'Q4': '学历',
    'Q5': '职业',
    'Q6': '可支配收入',
    'Q10': '了解程度',
    'Q11': '购买意愿',
    'Q12': '尝试购买',
    'Q13': '意义',
    'Q14': '宣传'
}

# 计算每个因素在每个类别中的总和
sum_by_label = df_with_labels.groupby('tKMeans_Label')[input_variables].sum()

# 计算每个因素在每个类别的占比
proportion_by_label = sum_by_label.div(sum_by_label.sum(axis=1), axis=0)

# 将变量名称替换为中文
proportion_by_label.columns = [variable_names[var] for var in proportion_by_label.columns]

# 设置中文字体
plt.rcParams['font.sans-serif'] = ['SimHei']

# 创建热图
plt.figure(figsize=(10, 6))
sns.heatmap(proportion_by_label, cmap='YlGnBu', annot=True, fmt=".2f", linewidths=0.5, cbar_kws={'label': '占比'})
plt.title('每个类别中每个因素的占比')
plt.xlabel('因素')
plt.ylabel('类别')
plt.xticks(rotation=45, fontsize=10)
plt.yticks(fontsize=10)
plt.tight_layout()
plt.show()
